返回首页

AJAX笔记——By Bug

 

AJAX入门与axios使用

axios使用

语法:

  1. 引入axios.js:https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js

  2. 使用axios函数

    • 传入配置对象

    • 使用.then回调函数接受结果,并作后去处理

    欢迎使用 - AJAX阶段 (apifox.com)

 

认识url

url:统一资源定位符,简称网址,用于访问网络资源

axios-查询参数

 

案例:地区查询

需求:根据输入的省,市查询地区,并渲染列表

 

请求方法和数据提交

请求方法

对服务器资源,要执行的操作

请求方法操作
get获取数据
post提交数据
put修改数据(全部)
delete删除数据
patch修改数据(部分)

 

axios 请求配置

url:请求的url地址 method:请求的方法,get可以省略 data:提交数据

 

axios 错误处理

示例

HTTP报文 请求报文组成 响应报文组成

响应行(状态行):协议,响应码,状态信息 响应头:以键值对形式携带附加信息 空行:分隔响应头 响应体:返回的资源

响应状态码 用来表示请求是否成功

状态码说明
1XX信息
2XX成功
3XX重定向消息
4XX客户端错误
5XX服务器错误

 

接口文档

欢迎使用 - AJAX阶段 (apifox.com)

 

form-serialize插件

作用:快速收集表单元素的值

语法:

 

案例:图书管理系统

bootstrap弹窗 模态弹框(Modal)-Bootstrap中文网

  1. 通过css属性方式控制弹窗显示与隐藏

    显示: 在按钮中添加data-bs-toggle="modal"(显示)和data-bs-target="css选择器(用于区分不同的弹窗标签)" 隐藏:data-bs-dismiss="modal"

  2. JS控制弹窗显示显示或隐藏

 

 

案例:个人信息设置(null)

 

XMLHttpRequest

AJAX基本原理-XMLHttpRequest XMLHttpRequest(XHR)对象用于与服务器交互。通过 XMLHttpRequest 可以在不刷新页面的情况下请求特定 URL,获取数据。这允许网页在不影响用户操作的情况下,更新页面的局部内容。XMLHttpRequestAJAX 编程中被大量使用。 axios内部采用XMLHttpRequest与服务器交互

案例:地区查询

 

 

案例:登陆注册

 

promise

用于表示一个异步操作的最终完成或失败及其结果值

promise的三种状态

  1. new promise()——待定(pending)——初始状态,未兑现,未拒绝

  2. resolve()——已兑现(fulfilled)成功

  3. reject()——已拒绝(rejected)失败

 

封装—简单Axios

获取省列表

 

获取地区列表

 

携带请求体数据-注册

 

案例:天气预报(null)

 

同步代码和异步代码

同步代码:逐行执行,需原地等待结果后,才继续向下执行 异步代码:调用后耗时,不阻塞代码执行,在将来完成后触发一个回调函数

 

回调函数地狱

当多层回调函数形成嵌套关系时,就会成为回调函数地狱

回调地狱就是为是实现代码顺序执行而出现的一种操作,它会造成我们的代码可读性非常差,后期不好维护。

 

解决回调函数地狱问题

promise-链式调用

可以使用promise方式链式调用解决回调函数地狱问题 使得代码的可读性高,易于维护

 

async函数和await

async function 声明创建一个绑定到给定名称的新异步函数。函数体内允许使用 await 关键字,这使得我们可以更简洁地编写基于 promise 的异步代码,并且避免了显式地配置 promise 链的需要。

await 操作符用于等待一个 Promise 兑现并获取它兑现之后的值。它只能在异步函数或者模块顶层中使用

 

解决回调函数地狱

async函数和await解决回调函数地狱

 

错误捕获

 

事件循环

JavaScript 有一个基于事件循环的并发模型,事件循环负责执行代码、收集和处理事件以及执行队列中的子任务。

JavaScript是单线程的,为了让耗时的代码不阻塞其他代码执行,设计了事件循环模型

image-20240405154011838

同步任务会被放入调用栈中立即执行,异步任务会被浏览器托管,条件完成后放入任务队列,再被调用栈执行

 

微任务和宏任务

ES6后引入了promise对象,让js引擎也可以发起异步任务

异步任务分为:

微任务的优先权大于宏任务 image-20240405202802204

 

promise.all静态方法

概念:合并多个promise对象,等待所有同时成功完成(或某一个失败),做后续逻辑

语法

 

Node.js

Node.js入门

什么是node.js Node.js 是一个跨平台 JavaScript 运行环境,使开发者可以搭建服务器端的 JavaScript 应用程序。

Node.js的作用 编写数据接口,提供网页资源浏览功能等等 前端工程化:为后续学习vue等框架做铺垫

node.js安装 推荐安装版本:node-v16.19.0.msi 注意:

  1. 安装在非中文路径

  2. 无需安装其他配套软件

 

fs模块-读写文件

fs模块封装了与本机文件系统交互的方法和属性

方法:

  1. 加载fs模块对象

  2. 写入文件内容

  3. 读取文件内容

 

path模块-路径处理

建议:在node.js中使用绝对路径

  1. 加载path模块

  2. 使用path.join方法,拼接路径

案例:压缩前端html文档

 

http模块-创建web服务

步骤:

  1. 加载http模块,创建web对象

  2. 监听request请求事件,设置请求头和响应体

 

案例:部署网页时钟

 

Node.js模块化

定义:commonJS模块是Node.js打包JavaScript代码的原始方式。Node.js还支持浏览器和其他JavaScript运行时使用的ECMAscript模块标准。在Node.js中,每个文件都被视为一个单独的模块

概念:项目是由多个模块文件组成

好处:提高代码的复用性。按需加载,独立作用域

commonJS标准

需求:封装并导出地址和求和函数

该标准规定了模块导入和导出的方法 使用: 1.导出:module.exports={ 对外属性1:暴露的变量1, 对外属性2:暴露的变量2, } 2.导入:require('模块名/路径') 模块名/路径: 内置模块:直接写模块名(fs,path,http) 自动定义模块:写模块的文件路径

 

ECMAscript标准

需求:封装并导出地址和求和函数

注意:node.js默认使用的是commonJS标准,如果要使用ECMAscript标准需要在运行模块所在的文件夹创建一个package.json文件,并设置{type:module}

 

包的概念

将模块,代码,其他资料聚合成一个文件夹

要求:在根目录中,必须要有package.json文件(记录包的清单信息)

注意:导入软件包时,引入的默认是index.js模块文件或main实行执行的文件

 

npm软件包管理器

npm是node.js标准的软件包管理器

使用: 1.初始化清单文件:npm init -y (得到package.json文件,有的可以省略) 2.下载软件包:npm i 软件包名称 3.使用软件包

示例:下载dayjs软件包,来格式化时间

 

npm安装所有依赖

问题:如果在下载的项目中不包含node_modules,项目不能正常运行。 解决:在终端中输入命令:npm i,程序会根据package.json中记录的软件包数据,下载对应的软件包

 

npm全局软件包-(nodemon)

软件包的区别: 本地软件包:当前项目使用,封装属性和方法,存在于node_modules 全局软件包:本机所有项目使用,封装命令和工具,存在于系统设置的位置

nodemon作用:代替node命令,检测代码更改,自动重启程序

使用: 1.安装:npm i nodemon -g(-g表示安装到全局环境中) 2.运行:nodemon执行js文件

 

总结

常用命令:

功能命令
执行js文件node js文件
初始化package.jsonnpm init -y
下载本地软件包npm i 软件包名
下载全局软件包npm i 软件包名 -g
删除软件包npm uni 软件包名

 

Webpack

概念 | webpack 中文文档 | webpack中文文档 | webpack中文网 (webpackjs.com)

 

Webpack简介

Webpack是一个用于现代JavaScript应用程序的静态模块打包工具,当Webpack处理应用程序时,他会在内部从一个或多个入口构建一个依赖图,然后将项目中所需的每一个模块组合成一个或多个bundles,它们均是静态资源,用于展示内容

静态模块:指的是编写代码过程中,html,css,js,图片等固定内容的文件

打包:把静态模块内容,压缩,整合,转译等

安装webpack webpack-cli并配置到自定义命令 npm i webpack webpack-cli --save-dev (--save-dev)--仅配置到当前项目

操作步骤: 1.准备项目源码 2.准备webpack打包环境 3.运行自定义打包命令

 

案例:用户登录—用户名密码

image-20240419201329681

webpack打包完成后的文件存在于dist下的main.js 1.在src/utils下创建函数包 2.在index中引入函数包 3.初始化package.json 4.配置自定义命令 5.运行打包,自定义命令

 

Webpack修改入口和出口

默认入口:src/index.js 默认出口:dist/main.js

修改步骤: 1.在项目的根目录下新建文件:webpack.config.js 2.配置对象,配置出入口文件路径

 

webpack自动生成html文件

安装软件包插件:html-webpack-plugin,在webpack打包时生成html文件

  1. 下载html-webpack-plugin软件包

  2. 配置webpack.config.js让webpack拥有插件功能

     

打包css代码

webpack默认只识别js代码,需要安装加载器

加载器:css-loader——解析css代码 加载器:style-loader——将解析后的css代码插入到DOM

步骤:

  1. 准备css文件引入到入口文件index.js中

  2. 下载加载器

  3. 配置webpack.config.js

  4. 打包

 

提取打包后的css文件

插件:mini-css-extract-plugin 提取css代码 这个插件不可以和style-loader一起使用

 

压缩打包的css

插件: css-minimizer-webpack-plugin

 

打包图片

无需下载额外加载器模块,只需要配置webpack

资源模块 | webpack 中文文档 | webpack中文文档 | webpack中文网 (webpackjs.com)

webpack.config.js

 

搭建开发环境

之前修改代码后需要重新打包后才能运行查看,效率较低 开发环境软件包,配置webpack-dev-server快速开发应用程序

作用:启动web服务,自动检测代码变化,自动打包,热更新到网页

方法:

  1. 下载webpack-dev-server

  2. 将模式设置为:开发模式,配置自定义命令

 

打包模式

即:告知webpack使用相应的模式内置优化

分类:

模式名称特点场景
开发模式development调试代码,实时加载,模块热更新本地开发
生产模式production压缩代码,资源优化,更轻量打包上线

设置方法:

  1. 在webpack.config.js文件中设置mode选项

  2. 在package.json中自定义命令后添加属性:webpack serve --mode=development

注意:方法2的优先级高于方法1

 

开发环境调错

问题:代码被压缩后无法定位到源代码位置

source map:可以准确追踪错误和警告在源代码的位置

使用方法:

注意:source map只能用于开发环境,不要在生产环境中使用(防止被轻易查看源代码位置)

 

别名解析

创建import引入路径的别名,确保模块引入变得更简单 方法:在webpack.config.js中配置以下内容:

 

CDN的使用

需求:在开发模式下使用本地的第三方库,在生产模式下使用CDN加载引入

image-20240424194447877

image-20240424194739839

 

webpack多页面打包

步骤:

  1. 准备源代码

  2. 下载form-serialize包并导入核心代码中使用

  3. 配置webpack.config.js多入口和多页面设置 在new 一个httpwebpackplugin

     

优化-分割公共代码

image-20240424204622103

总结

其他插件和文档: webpack | webpack中文文档 | webpack中文网 (webpackjs.com)